package org.example.tree;

public class BinaryTree {

    private HeroNode root;

    public void setRoot(HeroNode root){
        this.root = root;
    }

    public HeroNode getRoot() {
        return root;
    }

    //前序遍历
    public void preOrder() {
        if(this.root != null) {
            this.root.preOrder();
        }else {
            System.out.println("二叉树为空，无法遍历");
        }
    }

    //中序遍历
    public void infixOrder() {
        if(this.root != null) {
            this.root.midOrder();
        }else {
            System.out.println("二叉树为空，无法遍历");
        }
    }
    //后序遍历
    public void postOrder() {
        if(this.root != null) {
            this.root.postOrder();
        }else {
            System.out.println("二叉树为空，无法遍历");
        }
    }

    public void delNode(int no){
        if (root != null){
            if (root.getNo() == no){
                root = null;
            }else{
                boolean flag = root.delNode(no);
                System.out.println(flag);
                if (!flag){
                    System.out.println("没有该元素，无法删除");
                }
            }
        }
        else {
            System.out.println("树为空，无法删除");
        }
    }

    public void preSearch(int no){
        if (this.root != null){
            System.out.println("查找结果为："+ this.root.preSearch(no));
        }else {
            System.out.println("二叉树为空，无法查找");
        }
    }

    public void midSearch(int no){
        if (this.root != null){
            System.out.println("查找结果为："+ this.root.midSearch(no));
        }else {
            System.out.println("二叉树为空，无法查找");
        }
    }

    public void postSearch(int no){
        if (this.root != null){
            System.out.println("查找结果为："+ this.root.postSearch(no));
        }else {
            System.out.println("二叉树为空，无法查找");
        }
    }

}
